<?php
/**
 * 選手データクラスモジュール
 */
require_once 'Xml.php';
require_once dirname(__FILE__) . '/../Controller.php';

/**
 * 選手データクラス
 * @author admin
 *
 */
class Models_Players_Xml_Controller extends Models_Players_Controller
{
	/** 認証文字列保存キー */
	const KEY_CONFIRM ="MCF";

	/** XML ファイル名 */
	protected $_strFileName;

	public function __construct($strFileName='')
	{
		$this->loadFromFile($strFileName);
	}

	/**
	 * XMLファイル形式のデータファイルを読み込む
	 * Enter description here ...
	 * @param string $strFileName
	 */
	public function loadFromFile( $strFileName='' )
	{
		if ( $strFileName == '' ) {
			$strFileName = dirname( __FILE__ ) . '/databox/static.xml';
			$this->_strFileName = $strFileName;
		}
		$objXml = new Lib_Xml;
		$aryDataList = $objXml->loadFromFile( $strFileName, array( self::KEY_PLAYER ) );
		if ( $aryDataList === FALSE ) {
			$this->_aryDataList = FALSE;
			return FALSE;
		}
		$this->_aryDataList = $aryDataList[self::KEY_LIST][self::KEY_PLAYER];

		/***
		 * 不整合IDを抹消する
		 */
		$iCount = count( $this->_aryDataList );
		$i = 0;
		while ( $i < $iCount ) {
			if ( !isset( $this->_aryDataList[$i][self::KEY_ID] ) ) {
				unset( $this->_aryDataList[$i] );
			} else if ( $this->_aryDataList[$i][self::KEY_ID] == '' ) {
				unset( $this->_aryDataList[$i] );
			}
			$i ++;
		}
		return $this->_aryDataList;
	}

	/**
	 * 選手データリストをXML形式でファイルに保存する
	 * Enter description here ...
	 * @param string $strFileName
	 */
	public function saveToFile( $strFileName = '')
	{
		if ( $this->_aryDataList === FALSE ) {
			return FALSE;
		}
		if ( $strFileName == '' ) {
			if ( $this->_strFileName != '' ) {
				$strFileName = $this->_strFileName;
			} else {
				return FALSE;
			}
		}
		$aryDataList[self::KEY_LIST][self::KEY_PLAYER] = $this->_aryDataList;
		$objXml = new Lib_Xml;
		$objXml->aryXml = $aryDataList;
		$status = $objXml->saveToFile( $strFileName );
		return $status;
	}

	/**
	 * 選手認証キーを保存する
	 * @param unknown_type $sKey 認証文字列
	 */
	public function saveConfirmKey($sKey)
	{
		file_put_contents(dirname(__FILE__).'/cfkey.txt', trim($sKey));
	}

	/**
	 * 選手認証
	 * @param unknown_type $sKey 認証文字列
	 */
	public function confirm($sKey)
	{
		$sConfirmKey = file_get_contents(dirname(__FILE__).'/cfkey.txt');
		if ( $sConfirmKey == $sKey ) {
			return TRUE;
		}
		return FALSE;
	}

	/**
	 * 認証済みであればＴＲＵＥを返す
	 */
	public function isConfirmed()
	{
		$bResult = FALSE;
		if ( isset($_COOKIE[self::KEY_CONFIRM]) ) {
			$sKey = $_COOKIE[self::KEY_CONFIRM];
			$bResult = $this->confirm($sKey);
		}
		return $bResult;
	}
}
